notebook: restore previous behaviour wrt. unparenting of tab labels
authorCosimo Cecchi <cosimoc@gnome.org>
Tue, 31 Jul 2012 18:17:54 +0000 (20:17 +0200)
committerCosimo Cecchi <cosimoc@gnome.org>
Tue, 31 Jul 2012 18:17:54 +0000 (20:17 +0200)
commitc1218f964a8c541f8e82d42463be02a25eb36be9
tree28f434aa05d77a2c2c5ac5a51d5dc966ce1b819d
parent844e793246f4f0b31ee3dcebc64fffc058c576e1
notebook: restore previous behaviour wrt. unparenting of tab labels

When the tab label gets removed from the notebook on widget
desctruction, we should still unconditionally unparent it from the
notebook, since failing to do so will keep a stray reference alive.

In case applications rely on the tab label being destroyed to release
other references (e.g. because the tab label is a custom object, or
another object's lifecycle is tied to it using g_object_set_data_full()),
this will also possibly cause other references to get leaked.
In Nautilus, the result was we were failing to release the reference to
a NautilusWindowSlot, and other parts of the application relied
on it being destroyed at a specific time instead, causing the
application to crash when closing a window.

This is a regression from commit
325cf071d1b6de55eac2a97d8f38558efda17807.

This commit restores the previous unparenting behavior in case we're not
in a DnD operation.

https://bugzilla.gnome.org/show_bug.cgi?id=680349
gtk/gtknotebook.c